package doc2db.fileWorker.xml;

import doc2db.Keey;
import doc2db.table.DocTableHead;

/**split("\\|");
 *  <p></p>
 * @author yuriy
 */
public class TableParam {
    private boolean uniteTable = false;
    private String changeHeadName [][] = null;//[0][0]="что" [0][1]="на что" ...
    private boolean needChangeHeadName = false;
    private String myHeadName [] = null;    //[0]=head1 [1]=head2 [2]=head3 ...
    private boolean needMyHeadName = false;

    /**
     * <p></p>
     */
    public TableParam() {
    }

    /**
     * <p>Метод устанавливает, нужно ли будет обьеденять таблици
     * в обрабатываемом документе. Этот метод влияет
     * на всеопределённый параметр Keey.isUniteTables </p>
     * @param unite да/нет
     */
    public void setUniteTable(String str) {
        if(str.toLowerCase().equals("no")){
            uniteTable = false;
            Keey.isUniteTables = false;
        }else if(str.toLowerCase().equals("yes")){
            uniteTable = true;
            Keey.isUniteTables = true;
        }
    }

    /**
     * tegValue
     * @param tegValue
     * @param atrValue
     */
    public void setTreeTable(String str, String atrValue) {
        if(str.toLowerCase().equals("yes")){
            Keey.isTreeHead = true;
            try {
                Keey.headDepth = Integer.parseInt(atrValue);
            } catch (NumberFormatException e) {
                Keey.headDepth = 0;
            }
        }
    }

    /**
     * <p>Если входная строка заданна правельно, то
     * создаётся массив заголовков. Но если заголовки
     * были заданны явно, то останутся явные заголовки</p>
     * @param headName <p>что:=на что||что:=на что</p>
     */
    public void setChangeHeadName(String headName) {
        if(headName.equals("ul"))
            return;
        String str[] = headName.trim().split("\\|\\|");
        if(str.length < 1){
            return;
        }
        changeHeadName = new String [str.length][2];
        for (int i = 0; i < str.length; i++) {
            String str2 [] = str[i].trim().split(":=");
            if(str2.length != 2){
                return;
            }
            for (int j = 0; j < str2.length; j++) {
                changeHeadName[i][j] = "" + str2[j].trim();
            }
        }
        needChangeHeadName = true;
    }

    /**
     * <p>Если входная строка заданна правельно, то
     * создаётся массив заголовков</p>
     * @param headName <p>head1||head2||head3</p>
     */
    public void setMyHeadName(String headName) {
        if(headName.equals("ul"))
            return;
        String str [] = headName.trim().split("\\|\\|");
        if(str.length < 1){
            return;
        }
        myHeadName = new String [str.length];
        for (int i = 0; i < myHeadName.length; i++) {
            myHeadName[i] = str[i].trim();
        }
        needMyHeadName = true;
    }

    public void changeHeadName(String [] alldName, DocTableHead head){
        head.clear();
        for (int i = 0; i < Math.min(changeHeadName.length, alldName.length); i++) {
            if(changeHeadName[i][0].equals("*")){
                alldName[i] = changeHeadName[i][1];
            }
        }
        for (int i = 0; i < alldName.length; i++) {
            for (int j = 0; j < changeHeadName.length; j++) {
                if(changeHeadName[j][0].equals(alldName[i].trim())){
                    alldName[i] = changeHeadName[j][1];
                }
            }
            head.add(alldName[i]);
        }
        
    }

    public String[][] getChangeHeadName() {
        return changeHeadName;
    }

    public String[] getMyHeadName() {
        return myHeadName;
    }

    public boolean isNeedChangeHeadName() {
        return needChangeHeadName;
    }

    public boolean isNeedMyHeadName() {
        return needMyHeadName;
    }

    public boolean isUniteTable() {
        return uniteTable;
    }


}
